import java.util.*;

/**
 * @author CY
 * @date 2022/10/31 11:11
 * 对集合工具类的熟悉总结
 **/
public class TestCollections {
    //查找
    public static void main(String[] args) {
        //顺序表
        ArrayList<Integer> arrayList = new ArrayList<Integer>();
        arrayList.add(1);
        arrayList.add(3);
        arrayList.add(2);
        /**
         * binarySearch(List list, Object key) ：⼆分查找法，前提是 List 已经排序过了
         */
//        System.out.println(Collections.binarySearch(arrayList, 3));
        /**
         * ax(Collection coll) ：返回最⼤元素
         */
//        System.out.println(Collections.max(arrayList));



        //链表（实现了List接口）
        LinkedList<Integer> linkedList = new LinkedList<>(arrayList);
        /**
//         * binarySearch(List list, Object key) ：⼆分查找法，前提是 List 已经排序过了
         */
//        System.out.println(Collections.binarySearch(linkedList, 3));
        /**
         * ax(Collection coll) ：返回最⼤元素
         */
//        System.out.println(Collections.max(linkedList,((o1, o2) -> o2-o1)));




        //栈（实现了List接口）
        Stack<Integer> integerStack = new Stack<Integer>();
        integerStack.push(1);
        integerStack.push(3);
        integerStack.push(2);
        integerStack.push(4);

        /**
         * binarySearch(List list, Object key) ：⼆分查找法，前提是 List 已经排序过了
         */
//        System.out.println(Collections.binarySearch(integerStack, 3));
        /**
         * ax(Collection coll) ：返回最⼤元素
         */
//        System.out.println(Collections.max(integerStack,(o1,o2)->o1-o2));


        //HashSet(未实现List接口)
        HashSet<Integer> integerHashSet = new HashSet<>(arrayList);
//        System.out.println(Collections.max(integerHashSet));
        System.out.println(Collections.frequency(integerHashSet,2));




        //判断两个集合是否没有交集
        System.out.println(Collections.disjoint(integerHashSet, integerHashSet));
        Collections.addAll(integerHashSet,1,3,4,5);
        System.out.println(Collections.max(integerHashSet));



    }

    //排序总结
    public static void main1(String[] args) {
        //集合工具类提供的查找操作，传入的参数一般都是一个List接口，这也就就意味着ArrayList,LinkedList,Stack都能使用，接下来实战演示一下
        //ArrayList
        ArrayList<Integer> arrayList = new ArrayList<Integer>();
        arrayList.add(1);
        arrayList.add(3);
        arrayList.add(2);
        /**
         * 翻转
         */
//        Collections.reverse(arrayList);
        /**
         * 洗牌
         *
         */
//        Collections.shuffle(arrayList);
        /**
         * 默认自然升序
         */
//
        /**
         * swap(List list, int i, int j) ：将 i 和 j 位置的元素交换位置
         */
//        Collections.swap(arrayList,0,2);


//        System.out.println(arrayList);

        //LinkedList
        LinkedList<Integer> linkedList = new LinkedList<>(arrayList);
        /**
         * 翻转
         */
//        Collections.reverse(linkedList);
        /**
         * 洗牌
         *
         */
//        Collections.shuffle(linkedList);
        /**
         * 默认自然升序
         */
//        Collections.sort(linkedList,(o1,o2)->o2-o1);
        /**
         * swap(List list, int i, int j) ：将 i 和 j 位置的元素交换位置
         */
//        Collections.swap(linkedList,0,2);
//        System.out.println(linkedList);
        //Stack
        Stack<Integer> integerStack = new Stack<Integer>();
        integerStack.push(1);
        integerStack.push(3);
        integerStack.push(2);

        /**
         * 翻转
         */
//        Collections.reverse(integerStack);
        /**
         * 洗牌
         *
         */
//        Collections.shuffle(integerStack);
        /**
         * 默认自然升序
         */
//        Collections.sort(integerStack,(o1,o2)->o2-o1);
        /**
         * swap(List list, int i, int j) ：将 i 和 j 位置的元素交换位置
         */
        Collections.swap(integerStack, 0, 2);
        for (Integer integer : integerStack) {
            System.out.print(integer + " ");
        }
    }
}
